Guava Collections Utilities

Java Technologies - গুয়াভা (Guava)
169
169

Guava লাইব্রেরি Java প্রোগ্রামিংয়ে কাজ করার সময় কোলেকশন ডেটা স্ট্রাকচার নিয়ে কাজ করার জন্য অনেক সহায়ক এবং শক্তিশালী ইউটিলিটি সরবরাহ করে। এই কোলেকশন ইউটিলিটি Java Collections Framework এর ওপর ভিত্তি করে তৈরি, তবে এতে আরও অনেক উন্নত ফিচার এবং কার্যকারিতা রয়েছে যা ডেভেলপারদের আরও সহজে এবং দ্রুত কোড লিখতে সাহায্য করে।

Guava Collections Utilities এর সুবিধা

Guava এর Collections Utilities মূলত বিভিন্ন ধরনের কোলেকশন নিয়ে কাজ করার জন্য বিশেষভাবে ডিজাইন করা হয়েছে। এর কিছু গুরুত্বপূর্ণ ইউটিলিটি হল:

  • Immutable Collections: Guava লাইব্রেরি ImmutableList, ImmutableSet, ImmutableMap সহ অন্যান্য Immutable কোলেকশন প্রকার সরবরাহ করে। এসব কোলেকশন পরিবর্তন করা সম্ভব নয়, যার ফলে কোডের নিরাপত্তা এবং নির্ভরযোগ্যতা বৃদ্ধি পায়।

    উদাহরণ:

    ImmutableList<String> list = ImmutableList.of("apple", "banana", "cherry");
    
  • Multiset: Guava এর Multiset ক্লাস একটি কোলেকশন যা একাধিক কপি ধারণ করতে পারে, অর্থাৎ একই উপাদান একাধিকবার থাকতে পারে। এটি সাধারণ Set এর তুলনায় একটু আলাদা কারণ সেখানে উপাদানগুলি একবারই থাকে।

    উদাহরণ:

    Multiset<String> multiset = HashMultiset.create();
    multiset.add("apple");
    multiset.add("apple");
    multiset.add("banana");
    
  • Multimap: Guava এর Multimap একটি কোলেকশন যা একটি কী এর জন্য একাধিক মান ধারণ করতে পারে। এটি সাধারণ Map এর মতোই, তবে একটি কী এর জন্য একাধিক মান থাকে।

    উদাহরণ:

    Multimap<String, String> multimap = ArrayListMultimap.create();
    multimap.put("fruit", "apple");
    multimap.put("fruit", "banana");
    
  • BiMap: BiMap একটি দুই-মুখী ম্যাপের মতো। অর্থাৎ, এটি কেবল কী থেকে মান নয়, বরং মান থেকে কীও বের করতে সক্ষম। Guava এর BiMap ব্যবহারে আপনি উভয় দিক থেকে দ্রুত অ্যাক্সেস পেতে পারেন।

    উদাহরণ:

    BiMap<String, Integer> biMap = HashBiMap.create();
    biMap.put("one", 1);
    biMap.put("two", 2);
    
  • Table: Table একটি দুটি কী সহ কোলেকশন যা সারি এবং কলামের মধ্যে মান ধারণ করে। এটি সাধারণত ডেটাবেসের টেবিলের মতো কাজ করে, যেখানে সারি ও কলামের জন্য দুটি কী থাকে।

    উদাহরণ:

    Table<String, String, Integer> table = HashBasedTable.create();
    table.put("row1", "col1", 10);
    table.put("row2", "col2", 20);
    
  • Sets: Guava একটি উন্নত Sets ক্লাসও প্রদান করে যা কনভেনশনাল Java Set এর তুলনায় আরো কার্যকরী ও সহজ। উদাহরণস্বরূপ, Sets.difference() এবং Sets.intersection() পদ্ধতি দুটি সেটের মধ্যে পার্থক্য বা যোগাযোগ খুঁজে বের করতে সাহায্য করে।

    উদাহরণ:

    Set<String> set1 = Sets.newHashSet("apple", "banana");
    Set<String> set2 = Sets.newHashSet("banana", "cherry");
    Set<String> difference = Sets.difference(set1, set2);  // {"apple"}
    
  • Lists: Guava এর Lists ইউটিলিটি ক্লাস Java List API এর বিভিন্ন সুবিধা প্রদান করে। এটি একটি সহজ উপায়ে লিস্ট তৈরি, রিভার্স, ট্রান্সফর্ম এবং বিভিন্ন অপারেশন পরিচালনা করতে সাহায্য করে।

    উদাহরণ:

    List<String> list = Lists.newArrayList("apple", "banana", "cherry");
    

Guava Collections Utilities এর ব্যবহার

Guava Collections Utilities ব্যবহার করার সুবিধা হলো:

  • সহজ এবং কম্প্যাক্ট কোড: Guava-র সাহায্যে অনেক কম কোডে জটিল কোলেকশন অপারেশন সম্পাদন করা যায়।
  • পারফরম্যান্স বৃদ্ধি: Guava এর কিছু কোলেকশন ক্লাস যেমন Immutable এবং Multiset দ্রুত এবং কার্যকরী ভাবে কাজ করে, বিশেষ করে যখন কোডের স্থিতিশীলতা এবং নিরাপত্তা জরুরি।
  • সুন্দর ডেটা স্ট্রাকচার: Guava এর নতুন ধরনের কোলেকশন যেমন BiMap এবং Multimap ডেটা ম্যানেজমেন্টকে আরও সহজ এবং কার্যকরী করে তোলে।
  • ডাটা ইন্টিগ্রিটি: Immutable কোলেকশন ব্যবহার করলে ডেটার পরিবর্তন অনির্বাচিত হয়ে যায়, যা কোডের মাপযোগ্যতা এবং নিরাপত্তা বাড়ায়।

Guava লাইব্রেরির Collections Utilities Java ডেভেলপারদের জন্য একটি অত্যন্ত মূল্যবান টুল, যা তাদের কোলেকশন ডেটা স্ট্রাকচার নিয়ে কাজ করার সময় অনেক সুবিধা প্রদান করে।


Content added By

Lists, Sets, এবং Maps এর জন্য Guava এর Utility Methods

132
132

Guava লাইব্রেরি Java ডেভেলপারদের জন্য বিভিন্ন ইউটিলিটি মেথড প্রদান করে, যা List, Set, এবং Map এর মতো সাধারণ ডাটা স্ট্রাকচারের কাজকে আরও সহজ এবং কার্যকরী করে তোলে। Guava এই ডাটা স্ট্রাকচারগুলির জন্য অনেক ধরনের অতিরিক্ত ফিচার এবং অপটিমাইজড মেথড সরবরাহ করে, যা সুনির্দিষ্ট কাজগুলো করতে সাহায্য করে। এখানে আমরা Guava লাইব্রেরির সাহায্যে Lists, Sets এবং Maps এর জন্য কিছু গুরুত্বপূর্ণ ইউটিলিটি মেথড সম্পর্কে আলোচনা করব।

Lists এর জন্য Guava এর Utility Methods

Guava List এর জন্য বেশ কিছু ইউটিলিটি মেথড প্রদান করে, যা ডাটা স্ট্রাকচার ম্যানিপুলেশন সহজ করে তোলে। কিছু গুরুত্বপূর্ণ মেথড:

  1. Lists.newArrayList()

    • নতুন একটি ArrayList তৈরি করতে ব্যবহৃত হয়।
    List<String> list = Lists.newArrayList("Apple", "Banana", "Cherry");
    
  2. Lists.transform()

    • এটি একটি List কে অন্য একটি List তে রূপান্তর করতে ব্যবহৃত হয়, যেখানে রূপান্তরের জন্য একটি ফাংশন দেওয়া হয়।
    List<Integer> numbers = Lists.newArrayList(1, 2, 3, 4);
    List<String> stringNumbers = Lists.transform(numbers, new Function<Integer, String>() {
        public String apply(Integer number) {
            return "Number " + number;
        }
    });
    
  3. Lists.partition()

    • একটি বড় List কে ছোট ছোট ভাগে (partitions) ভাগ করতে ব্যবহৃত হয়।
    List<Integer> numbers = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8);
    List<List<Integer>> partitions = Lists.partition(numbers, 3);
    

Sets এর জন্য Guava এর Utility Methods

Guava Set এর জন্য কিছু বিশেষ ইউটিলিটি মেথড সরবরাহ করে যা Set-এ অপারেশনগুলো আরো দ্রুত এবং কার্যকরী করে তোলে।

  1. Sets.newHashSet()

    • নতুন একটি HashSet তৈরি করতে ব্যবহৃত হয়।
    Set<String> set = Sets.newHashSet("Apple", "Banana", "Cherry");
    
  2. Sets.union()

    • দুটি Set এর ইউনিয়ন (union) বের করার জন্য ব্যবহৃত হয়।
    Set<String> set1 = Sets.newHashSet("Apple", "Banana");
    Set<String> set2 = Sets.newHashSet("Banana", "Cherry");
    Set<String> unionSet = Sets.union(set1, set2);
    
  3. Sets.difference()

    • দুটি Set এর পার্থক্য (difference) বের করার জন্য ব্যবহৃত হয়।
    Set<String> set1 = Sets.newHashSet("Apple", "Banana", "Cherry");
    Set<String> set2 = Sets.newHashSet("Banana", "Cherry");
    Set<String> differenceSet = Sets.difference(set1, set2);
    
  4. Sets.intersection()

    • দুটি Set এর সংযোগ (intersection) বের করার জন্য ব্যবহৃত হয়।
    Set<String> set1 = Sets.newHashSet("Apple", "Banana", "Cherry");
    Set<String> set2 = Sets.newHashSet("Banana", "Cherry", "Date");
    Set<String> intersectionSet = Sets.intersection(set1, set2);
    

Maps এর জন্য Guava এর Utility Methods

Guava Map এর জন্যও বিভিন্ন ইউটিলিটি মেথড প্রদান করে, যা কাজকে সহজ এবং আরও কার্যকরী করে তোলে।

  1. Maps.newHashMap()

    • একটি নতুন HashMap তৈরি করতে ব্যবহৃত হয়।
    Map<String, String> map = Maps.newHashMap();
    map.put("name", "Alice");
    map.put("city", "New York");
    
  2. Maps.uniqueIndex()

    • একটি List বা Set থেকে একটি Map তৈরি করার জন্য ব্যবহৃত হয়, যেখানে একটি নির্দিষ্ট কী (key) নির্ধারণ করা হয়।
    List<Person> people = Lists.newArrayList(new Person("Alice", 30), new Person("Bob", 25));
    Map<String, Person> map = Maps.uniqueIndex(people, new Function<Person, String>() {
        public String apply(Person person) {
            return person.getName();
        }
    });
    
  3. Maps.filterEntries()

    • একটি Map এর মধ্যে নির্দিষ্ট শর্ত (condition) অনুযায়ী ফিল্টার করার জন্য ব্যবহৃত হয়।
    Map<String, Integer> map = Maps.newHashMap();
    map.put("Apple", 5);
    map.put("Banana", 2);
    map.put("Cherry", 7);
    Map<String, Integer> filteredMap = Maps.filterEntries(map, new Predicate<Map.Entry<String, Integer>>() {
        public boolean apply(Map.Entry<String, Integer> entry) {
            return entry.getValue() > 3;
        }
    });
    
  4. Maps.transformValues()

    • একটি Map এর মান (value) গুলোকে নির্দিষ্ট ফাংশনের মাধ্যমে রূপান্তর করতে ব্যবহৃত হয়।
    Map<String, Integer> map = Maps.newHashMap();
    map.put("Apple", 5);
    map.put("Banana", 2);
    Map<String, String> transformedMap = Maps.transformValues(map, new Function<Integer, String>() {
        public String apply(Integer value) {
            return "Value is " + value;
        }
    });
    

Guava লাইব্রেরি Java ডেভেলপমেন্টে List, Set, এবং Map এর জন্য বিভিন্ন শক্তিশালী ইউটিলিটি মেথড সরবরাহ করে, যা কোড লেখার প্রক্রিয়া সহজ এবং দ্রুত করে তোলে। Guava-এর এই মেথডগুলো ব্যবহার করে ডাটা স্ট্রাকচারগুলির সাথে কাজ করা অনেক বেশি কার্যকর এবং কার্যক্ষম হয়।

Content added By

Iterables এবং Iterators এর ব্যবহার

115
115

Guava লাইব্রেরি Java-তে কোলেকশন ও ডেটা স্ট্রাকচার ম্যানিপুলেশনকে আরও সহজ এবং কার্যকরী করে তোলে। এতে Iterables এবং Iterators ক্লাস রয়েছে, যা কোলেকশন ডেটা নিয়ে কাজ করার ক্ষেত্রে অনেক শক্তিশালী এবং সুবিধাজনক ফিচার প্রদান করে। এই দুইটি ক্লাস ব্যবহার করে কোলেকশন থেকে ডেটা ইটেরেট (iterate) করা সহজ হয় এবং উন্নত কার্যকারিতা পাওয়া যায়।

Iterables ব্যবহার


Guava এর Iterables ক্লাস বিভিন্ন কোলেকশন অপারেশন সহজ করে তোলে। এটি Java এর স্ট্যান্ডার্ড Iterable ইন্টারফেসের ওপর ভিত্তি করে তৈরি, তবে এতে কিছু অতিরিক্ত ফিচার রয়েছে যা আপনাকে কোলেকশন ম্যানিপুলেশন করতে সাহায্য করে।

Iterables-এর প্রধান সুবিধাসমূহ

  1. নির্দিষ্ট শর্তে আইটেম নির্বাচন করা: আপনি Iterables.filter() ব্যবহার করে একটি কোলেকশন থেকে নির্দিষ্ট শর্তে মিলে এমন আইটেম বাছাই করতে পারেন।
  2. আইটেমগুলিকে একত্রিত করা: Iterables.concat() ব্যবহার করে একাধিক কোলেকশনকে একত্রিত করা সম্ভব।
  3. আইটেমের সর্বাধিক বা ন্যূনতম মান বের করা: Iterables.getLast() ব্যবহার করে শেষ আইটেম এবং Iterables.getOnlyElement() ব্যবহার করে কেবল একমাত্র আইটেম বের করা যায়।

উদাহরণ

import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;

import java.util.List;

public class IterablesExample {
    public static void main(String[] args) {
        List<String> list = Lists.newArrayList("Apple", "Banana", "Cherry");

        // filter() ব্যবহার করে একটি শর্ত অনুযায়ী ফিল্টার করা
        Iterable<String> filtered = Iterables.filter(list, fruit -> fruit.startsWith("A"));
        for (String fruit : filtered) {
            System.out.println(fruit); // Output: Apple
        }

        // concat() ব্যবহার করে কোলেকশন একত্রিত করা
        List<String> list2 = Lists.newArrayList("Date", "Elderberry");
        Iterable<String> concatenated = Iterables.concat(list, list2);
        for (String fruit : concatenated) {
            System.out.println(fruit);
        }
        // Output: Apple, Banana, Cherry, Date, Elderberry
    }
}

Iterators ব্যবহার


Guava এর Iterators ক্লাস বিভিন্ন ধরনের উন্নত ইটেরেটর (iterator) অপারেশন প্রদান করে। এটি জাভার স্ট্যান্ডার্ড Iterator ক্লাসের উপর ভিত্তি করে কাজ করে, কিন্তু এতে কিছু অতিরিক্ত ফিচার রয়েছে যা সহজে ডেটা ম্যানিপুলেশন করতে সহায়তা করে।

Iterators-এর প্রধান সুবিধাসমূহ

  1. Iterators.peekingIterator(): এটি একটি ইটেরেটর প্রদান করে যা পরবর্তী উপাদানটি দেখতে দেয়, কিন্তু সেটি ভোক করা (consume) করে না।
  2. Iterators.transform(): একটি নির্দিষ্ট ফাংশন প্রয়োগ করে কোলেকশন থেকে উপাদান পরিবর্তন করা যায়।
  3. Iterators.getOnlyElement(): একটি কোলেকশন থেকে একমাত্র উপাদানটি নিয়ে আসার জন্য এটি ব্যবহার করা যায়।

উদাহরণ

import com.google.common.collect.Iterators;
import com.google.common.base.Function;
import com.google.common.collect.Lists;

import java.util.Iterator;
import java.util.List;

public class IteratorsExample {
    public static void main(String[] args) {
        List<String> list = Lists.newArrayList("Apple", "Banana", "Cherry");

        // PeekingIterator ব্যবহার করা
        Iterator<String> iterator = Iterators.peekingIterator(list.iterator());
        while (iterator.hasNext()) {
            String fruit = iterator.next();
            System.out.println(fruit);
            if (iterator.hasNext()) {
                System.out.println("Next fruit: " + iterator.peek());
            }
        }
        // Output: Apple, Next fruit: Banana, Banana, Next fruit: Cherry, Cherry

        // transform() ব্যবহার করে কোলেকশনের উপাদান পরিবর্তন করা
        Iterator<String> transformedIterator = Iterators.transform(list.iterator(), new Function<String, String>() {
            @Override
            public String apply(String input) {
                return input.toUpperCase();
            }
        });

        while (transformedIterator.hasNext()) {
            System.out.println(transformedIterator.next()); // Output: APPLE, BANANA, CHERRY
        }
    }
}

Iterables এবং Iterators এর তুলনা


  • Iterables: এটি মূলত কোলেকশনগুলোর উপর কাজ করে এবং আপনি এর সাথে বিভিন্ন শর্তে ফিল্টারিং, আইটেম যুক্ত করা, কোলেকশন একত্রিত করা ইত্যাদি কাজ করতে পারেন।
  • Iterators: এটি আইটেম একে একে পাওয়ার জন্য ব্যবহৃত হয় এবং এর মাধ্যমে আপনি কোলেকশন থেকে একটির পর একটি আইটেম নিয়ে কাজ করতে পারেন। Guava এর Iterators ক্লাসে কিছু অতিরিক্ত সুবিধা রয়েছে, যেমন PeekingIterator এবং transform()

Guava এর Iterables এবং Iterators ক্লাসগুলো Java ডেভেলপমেন্টে কোলেকশন ডেটার ওপর কার্যকরভাবে কাজ করার জন্য শক্তিশালী টুলস। এগুলি ব্যবহারের মাধ্যমে আপনি আরও সহজভাবে কোলেকশন ম্যানিপুলেশন করতে পারবেন, বিশেষ করে যখন আপনার কোলেকশন থেকে ডেটা ইটেরেট বা পরিবর্তন করা প্রয়োজন।

Content added By

Multiset এবং Multimap এর ধারণা এবং ব্যবহার

116
116

Guava লাইব্রেরি Java ডেভেলপমেন্টে অনেক শক্তিশালী ডেটা স্ট্রাকচার সরবরাহ করে। এর মধ্যে Multiset এবং Multimap দুটি গুরুত্বপূর্ণ এবং জনপ্রিয় ডেটা স্ট্রাকচার। এগুলি সাধারণ Java ক্লাসের চেয়ে আরও বেশি ফিচার এবং কার্যকারিতা প্রদান করে। চলুন, এই দুটি ডেটা স্ট্রাকচারের ধারণা এবং ব্যবহার সম্পর্কে বিস্তারিত জানি।

Multiset এর ধারণা এবং ব্যবহার

Multiset হল এমন একটি ডেটা স্ট্রাকচার যা একটি কনটেইনার হিসেবে কাজ করে, যেখানে একাধিক অনুরূপ উপাদান রাখা যেতে পারে। সাধারণ Java Set-এ শুধুমাত্র ইউনিক (একক) উপাদান রাখা সম্ভব, তবে Multiset-এ আপনি একাধিক সমান উপাদান রাখতে পারবেন। এর মানে, একটি উপাদানকে একাধিক বার রাখা সম্ভব।

Multiset এর ব্যবহার

Guava লাইব্রেরিতে Multiset ব্যবহার করতে হলে, আপনি HashMultiset বা TreeMultiset ব্যবহার করতে পারেন।

import com.google.common.collect.HashMultiset;
import com.google.common.collect.Multiset;

public class MultisetExample {
    public static void main(String[] args) {
        Multiset<String> multiset = HashMultiset.create();
        
        // উপাদান যোগ করা
        multiset.add("Apple");
        multiset.add("Apple");
        multiset.add("Banana");
        
        // আউটপুট: Apple appears 2 times, Banana appears 1 time
        System.out.println("Apple Count: " + multiset.count("Apple"));
        System.out.println("Banana Count: " + multiset.count("Banana"));
        
        // সমস্ত উপাদান প্রদর্শন করা
        System.out.println(multiset);
    }
}

উপরে কোডে HashMultiset ব্যবহার করা হয়েছে, যেখানে "Apple" দুইবার এবং "Banana" একবার যোগ করা হয়েছে। আপনি count() মেথড দিয়ে নির্দিষ্ট উপাদানের সংখ্যা পেতে পারেন।


Multimap এর ধারণা এবং ব্যবহার

Multimap হল একটি বিশেষ ধরনের ম্যাপ (Map) যেখানে একক কী (key) একাধিক মান (value) সাথে সম্পর্কিত হতে পারে। সাধারণ Java Map-এ একটি কী-তে শুধুমাত্র একটি মান থাকে, কিন্তু Multimap-এ একটি কী-তে একাধিক মান রাখতে পারবেন। এটি বিশেষভাবে উপকারী যখন একই কী এর জন্য একাধিক মান থাকতে পারে।

Multimap এর ব্যবহার

Guava লাইব্রেরিতে Multimap ব্যবহার করতে, আপনি ArrayListMultimap বা HashMultimap ব্যবহার করতে পারেন। নিচে HashMultimap এর উদাহরণ দেওয়া হয়েছে:

import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;

public class MultimapExample {
    public static void main(String[] args) {
        Multimap<String, String> multimap = HashMultimap.create();
        
        // কী এবং মান যোগ করা
        multimap.put("Fruit", "Apple");
        multimap.put("Fruit", "Banana");
        multimap.put("Fruit", "Orange");
        multimap.put("Vegetable", "Carrot");
        
        // একটি কী এর জন্য সমস্ত মান প্রদর্শন করা
        System.out.println("Fruits: " + multimap.get("Fruit"));
        System.out.println("Vegetables: " + multimap.get("Vegetable"));
    }
}

উপরে কোডে "Fruit" কী এর জন্য তিনটি মান ("Apple", "Banana", "Orange") এবং "Vegetable" কী এর জন্য একটি মান ("Carrot") যুক্ত করা হয়েছে। get() মেথড ব্যবহার করে আপনি একটি কী এর সমস্ত মান দেখতে পারবেন।


সারাংশ

Guava এর Multiset এবং Multimap হল দুটি শক্তিশালী ডেটা স্ট্রাকচার যা Java প্রোগ্রামিংয়ে অনেক সুবিধা প্রদান করে। Multiset আপনাকে একাধিক সমান উপাদান রাখতে সাহায্য করে, যেখানে Multimap একাধিক মান (values) একক কী (key) এর সাথে সংযুক্ত করতে সাহায্য করে। এই দুটি ডেটা স্ট্রাকচার ব্যবহার করে আপনি আরও শক্তিশালী এবং কার্যকরী Java প্রোগ্রাম তৈরি করতে পারবেন।


Content added By

Table এবং BiMap এর ব্যবহার

139
139

গুয়াভা (Guava) লাইব্রেরিতে অনেক ইউটিলিটি ক্লাস রয়েছে যা Java প্রোগ্রামিং ভাষায় উন্নত ডেটা স্ট্রাকচার এবং কার্যকারিতা প্রদান করে। Table এবং BiMap দুটি গুরুত্বপূর্ণ ডেটা স্ট্রাকচার, যা বিশেষ ক্ষেত্রে অত্যন্ত কার্যকর। এই ক্লাসগুলো ব্যবহার করে আপনি আরও সহজ এবং দ্রুতভাবে ডেটা পরিচালনা করতে পারবেন।


Table এর ব্যবহার

Table হল একটি ডেটা স্ট্রাকচার যা একটি "Row" এবং "Column" ভিত্তিক কন্টেইনার হিসাবে কাজ করে। এটি মূলত একটি মাল্টি-ডাইমেনশনাল ম্যাপের মতো কাজ করে, যেখানে আপনার কাছে একটি Row এবং Column যুক্ত করার মাধ্যমে ডেটা সংরক্ষণ করা হয়। এটি Map<R, Map<C, V>> এর মতো দেখতে, যেখানে R হল রো, C হল কলাম এবং V হল ভ্যালু।

Table এর উদাহরণ

গুয়াভার Table ব্যবহার করে একটি উদাহরণ দেখি:

import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;

public class GuavaTableExample {
    public static void main(String[] args) {
        // Table তৈরি করা
        Table<String, String, Integer> table = HashBasedTable.create();
        
        // ডেটা যোগ করা
        table.put("Row1", "Column1", 10);
        table.put("Row1", "Column2", 20);
        table.put("Row2", "Column1", 30);
        
        // ডেটা পড়া
        System.out.println("Value at Row1, Column1: " + table.get("Row1", "Column1"));
        System.out.println("Value at Row2, Column1: " + table.get("Row2", "Column1"));
        
        // সমস্ত ডেটা আউটপুট
        System.out.println("All rows and columns: " + table);
    }
}

এই কোডে, Table<String, String, Integer> একটি টেবিল তৈরি করছে, যেখানে রো এবং কলাম হলো String, এবং ভ্যালু হলো Integer। এখানে HashBasedTable ব্যবহার করা হয়েছে, যা এক ধরনের টেবিল কনক্রিট ইমপ্লিমেন্টেশন।

Table এর সুবিধা

  • দ্বি-মাত্রিক (2D) ডেটা স্টোরেজ: টেবিল ডেটা সহজে রো এবং কলামে গ্রুপ করে সংরক্ষণ করতে সহায়ক।
  • দ্রুত অ্যাক্সেস: নির্দিষ্ট রো এবং কলামের মধ্যে দ্রুত ডেটা অ্যাক্সেস করা যায়।

BiMap এর ব্যবহার

BiMap হল একটি ডেটা স্ট্রাকচার যা দুটি ম্যাপের মতো কাজ করে, তবে এটি বিশেষভাবে দ্বৈত মান (bidirectional mapping) সমর্থন করে। এটি একটি কী থেকে ভ্যালু এবং ভ্যালু থেকে কী উভয় দিকে ম্যাপিং করার সুবিধা দেয়। BiMap এর মাধ্যমে, আপনি উল্টো মানও খুঁজে পেতে পারেন, যা সাধারণত অন্য ম্যাপের মাধ্যমে করা সম্ভব নয়।

BiMap এর উদাহরণ

গুয়াভার BiMap ব্যবহার করার উদাহরণ:

import com.google.common.collect.HashBiMap;
import com.google.common.collect.BiMap;

public class GuavaBiMapExample {
    public static void main(String[] args) {
        // BiMap তৈরি করা
        BiMap<String, Integer> biMap = HashBiMap.create();
        
        // ডেটা যোগ করা
        biMap.put("One", 1);
        biMap.put("Two", 2);
        biMap.put("Three", 3);
        
        // সাধারণ মান খোঁজা
        System.out.println("Value for 'One': " + biMap.get("One"));
        
        // উল্টো মান খোঁজা
        System.out.println("Key for 2: " + biMap.inverse().get(2));
        
        // সমস্ত ডেটা আউটপুট
        System.out.println("BiMap contents: " + biMap);
    }
}

এখানে, BiMap<String, Integer> ব্যবহার করা হয়েছে, যেখানে কী হলো String এবং ভ্যালু হলো Integerinverse() মেথডটি ব্যবহৃত হয়েছে, যা ভ্যালু থেকে কী পেতে সাহায্য করে।

BiMap এর সুবিধা

  • দ্বৈত ম্যাপিং: একসাথে দুটি রিভার্স ম্যাপিং প্রদান করে, যেখানে আপনি কী থেকে ভ্যালু এবং ভ্যালু থেকে কী উভয় দিকে অ্যাক্সেস করতে পারেন।
  • ডুপ্লিকেট রিভার্স ম্যাপিং এড়ানো: BiMap একে অপরের সাথে যুক্ত একক মান নিশ্চিত করে, অর্থাৎ একটি কী অথবা ভ্যালু শুধুমাত্র একবারই উপস্থিত থাকবে।

সারাংশ

গুয়াভা (Guava) লাইব্রেরির Table এবং BiMap ডেটা স্ট্রাকচারগুলি জাভাতে উন্নত ডেটা ম্যানিপুলেশন করতে অত্যন্ত কার্যকর। Table ব্যবহার করে আপনি মাল্টি-ডাইমেনশনাল ডেটা সঞ্চয় করতে পারেন, এবং BiMap ব্যবহার করে আপনি কী থেকে ভ্যালু এবং ভ্যালু থেকে কী উল্টোভাবে ম্যাপিং করতে পারেন। এই দুটি ডেটা স্ট্রাকচার আপনার প্রোগ্রামিং দক্ষতা বাড়িয়ে তুলতে এবং ডেটা পরিচালনা সহজ করে তুলতে সাহায্য করবে।


Content added By
Promotion